package co.gov.medellin.ssti.sub.model.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import co.gov.medellin.ssti.sub.model.dao.BOTEmpresaDAO;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.service.BOTEmpresaService;
import co.gov.medellin.ssti.sub.model.vo.Beneficiario_AtributoVO;
import co.gov.medellin.ssti.sub.model.vo.BeneficioOtorgadoEmpresaVO;
import co.gov.medellin.ssti.sub.model.vo.ModificarBOTVO;

@Service
public class BOTEmpresaServiceImpl implements BOTEmpresaService {
	@Autowired
	BOTEmpresaDAO botEmpresaDAOImpl;

	@Override
	public String findSedeOtorgamientoByCodBot(Long codeBot) {
		try {
			return botEmpresaDAOImpl.findSedeOtorgamientoByCodBot(codeBot);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public ModificarBOTVO findBeneficioAtri(String tipoDato,
			String codeBeneOtor, String codeAtri) {
		try {
			return botEmpresaDAOImpl.findBeneficioAtri(tipoDato, codeBeneOtor,
					codeAtri);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public boolean validarEditBOT(String groupUserName, String userName,
			Long codeBOTEmpresa) {
		try {
			return botEmpresaDAOImpl.validarEditBOT(groupUserName, userName,
					codeBOTEmpresa);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public boolean updateBOTEmpresa(
			BeneficioOtorgadoEmpresaVO beneficioOtorgadoEmpresaVO,
			Long codeSedeOld, List<Beneficiario_AtributoVO> lListaInsertar) {
		try {
			return botEmpresaDAOImpl.updateBOTEmpresa(
					beneficioOtorgadoEmpresaVO, codeSedeOld, lListaInsertar);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public BeneficioOtorgadoEmpresaVO findBOT(Long codeBOT) {
		try {
			return botEmpresaDAOImpl.findBOT(codeBOT);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public boolean tieneBeneficio(Long empCodigo, Long sbprCodigo) {
		try {
			return botEmpresaDAOImpl.tieneBeneficio(empCodigo, sbprCodigo);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public boolean otorgarBeneficio(
			BeneficioOtorgadoEmpresaVO beneficioOtorgadoEmpresaVO,
			List<Beneficiario_AtributoVO> lInsert) {
		try {
			return botEmpresaDAOImpl.otorgarBeneficio(
					beneficioOtorgadoEmpresaVO, lInsert);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public Long findUltimoCodeBOTBySbpr(Long codeSubpro, Long codeEmpresa) {
		try {
			return botEmpresaDAOImpl.findUltimoCodeBOTBySbpr(codeSubpro,
					codeEmpresa);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public String findValorBOTAtr(String tipoDato, Long codeBOT, Long codeAtri) {
		try {
			return botEmpresaDAOImpl.findValorBOTAtr(tipoDato, codeBOT,
					codeAtri);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public boolean validarDeleteBOT(String groupUserName, String userName,
			Long codeBOT) {
		try {
			return botEmpresaDAOImpl.validarDeleteBOT(groupUserName, userName,
					codeBOT);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public boolean deleteBOT(Long codeBOT) {
		try {
			return botEmpresaDAOImpl.deleteBOT(codeBOT);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}
}
